package cn.itcast.demo1;

public class Test {
    public static void main(String[] args) {



        Dog d = new Dog();
        d.setName("哈士奇");
        showAnimal(d);

        Mouse m=new Mouse();
        m.setName("Jerry");
        showAnimal(m);


        //演示多态
        /*
        Java中实现多态的三个步骤
        1.要有继承(或者实现)关系
        2.要有方法重写
        3.要有父类引用指向子类对象
         */
        //多态
        //Animal a=new Dog();
        //测试成员方法的调用:
        //结论:多态中调用成员方法是编译看左(左边的类型有没有这个成员)
        //     运行看右(运行时县体用的是右边类中的该成员).


    }
    //多态
    //需求:在该类中定义showAnimal()方法
    // 多态的做法
    // 多态的使用场景:父类型可以作为形参的数据类型
    // 这样可以接收其任意的子类对象。
    public  static void showAnimal(Animal an){
        an.eat();
    }
/*
   //传统做法
    public static void showAnimal(Dog d) {
        d.eat();
    }
    public static void showAnimal(Mouse m) {
        m.eat();
    }

 */
}
